#ifndef MONITOR_NEW_PARSER_SYSTEM_FILE_PARSER_H_
#define MONITOR_NEW_PARSER_SYSTEM_FILE_PARSER_H_

#include <string>

#include "parser_base.h"

namespace sysinfo {
namespace monitor {

class SystemFileParser : public ParserBase {
 public:
  SystemFileParser() = default;
  ~SystemFileParser() override = default;

  // 解析系统文件内容
  bool Parse(const std::string& command_name, 
             const std::string& output,
             SystemInfoProto* info) override;

 private:
  // 各种系统文件解析方法
  bool ParseProcMeminfo(const std::string& output, SystemInfoProto* system_info_proto);
  bool ParseProcCpuinfo(const std::string& output, SystemInfoProto* system_info_proto);
  bool ParseProcLoadavg(const std::string& output, SystemInfoProto* system_info_proto);
  bool ParseProcStat(const std::string& output, SystemInfoProto* system_info_proto);
  bool ParseProcVmstat(const std::string& output, SystemInfoProto* system_info_proto);
  bool ParseProcDiskstats(const std::string& output, SystemInfoProto* system_info_proto);
  bool ParseProcNetDev(const std::string& output, SystemInfoProto* system_info_proto);
};

}  // namespace monitor
}  // namespace sysinfo

#endif  // MONITOR_NEW_PARSER_SYSTEM_FILE_PARSER_H_